//
//  HomeTableViewController.swift
//  sinaOnceAgain
//
//  Created by 王相超 on 16/2/16.
//  Copyright © 2016年 chuanzhi. All rights reserved.
//

import UIKit
import AFNetworking
import SVProgressHUD

class HomeTableViewController: BaseTableViewController {
    
    
    //模型数组
    private lazy var statuslistViewModel = StatusListModel()
    
    //cellID
    private let homeCellID = "homeCellId"
    
    //系统下啦刷新控件
    let myRefreshControl = WBRefreshControl()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        if !userLogin {
            
            visitorLoginView?.setupInfoWith("关注一些人，回这里看看有什么惊喜", imageName: nil)
            
            return
        }
        
        //注册cell
        prepareForTableView()
        
    }
    
    //注册cell
    private func prepareForTableView() {
        
        tableView.registerClass(StatusCell.self, forCellReuseIdentifier: homeCellID)
        
        
        //自动行高
        tableView.estimatedRowHeight =  300
        tableView.rowHeight = UITableViewAutomaticDimension
        
        //设置分割线样式
        tableView.separatorStyle = .None
        

        //添加自定义下拉 刷新控件
        self.tableView.addSubview(myRefreshControl)
        //添加触发事件
        refreshControl?.addTarget(self, action: "loadData", forControlEvents: .ValueChanged)
        
        //将菊花设置为footview
        tableView.tableFooterView = indicatorView
        
        //设置点击状态栏快速回到顶部
        tableView.scrollsToTop = true
        
    }
    
    override func viewDidAppear(animated: Bool) {
        
        super.viewDidAppear(animated)
        
        loadData()
    }
    
    //加载首页数据
    @objc private func loadData() {
        
        //使用视图模型来获取 网络请求的结果  -> 模型数组
        refreshControl?.beginRefreshing()
        statuslistViewModel.loadHomeData(indicatorView.isAnimating()) { (isSuccess) -> () in
            
            self.refreshControl?.endRefreshing()
            //等待网络请求结束之后 修改控件的刷新状态
            self.myRefreshControl.endRefreshing()
            
            if isSuccess {
                self.tableView.reloadData()
                
                //小菊花停止转动
                self.indicatorView.stopAnimating()
            }else{
                //请求数据失败
                SVProgressHUD.showErrorWithStatus("网络君正在睡觉,请稍后再试")
            }
        }
}



    private lazy var indicatorView:UIActivityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: .Gray)
}

// tableView 的数据源方法
extension HomeTableViewController {
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return statuslistViewModel.statuses.count
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        //使用这个方法 获取cell 手写代码的时候需要手动注册cell
        let cell = tableView.dequeueReusableCellWithIdentifier(homeCellID,forIndexPath: indexPath) as! StatusCell
        
        if indexPath.row == statuslistViewModel.statuses.count-1 && !indicatorView.isAnimating(){
            
            indicatorView.startAnimating()

            loadData()
        }
        
        cell.status = statuslistViewModel.statuses[indexPath.row]
        return cell
        
    }
    
}

